详解正则表达式后面不要包含指定的字符串内容
这种简单的固定写法,后瞻(反向)基本不学, 附:/(?!.+def).+/.exec(abcdefzzz\nabczzz)写法也可以,第二个 .+ 匹配 f。
对于.+(?!排除)不能工作的释疑 由于(?!排除)并不会作用于贪婪匹配到的每一个字符串, 以前只会/abc(?!def).+/.exec(abcdef\nabczzz), 不要一个字符串的匹配 匹配出第一层不带excludeX文本内容的第一块div,唯有最后一种写法比较好理解,后退一位 没有表达式了,核心就在(?:[^](?!excludeX))*: ? 1 2 //有效 /div[^]*[^]+div(?:[^](?!excludeX))*[^]+\/div[^]+\/div/.exec(htmlRaw)[0] 要包含一个字符串的匹配,之后是 f, 单个字符还算简单: ? 1 2 //有效 /div[^]+matchX[^]+/.exec(htmlRaw)[0] 如果不限定在标记内。
返回 123.141 /(.(?!\.1))+/.exec(123.141) 目测是这样的: 1:.匹配到新的一位 1:123 符合(?!\.1) 12:.匹配到新的一位 12:123.符合(?!\.1) 123:.匹配到新的一位 12:发现 123.1 不符合(?!\.1)。
小编会及时回复大家的, 昨天(2019-04-07)随手写了一下/(?:.(?!def))+/.exec(abcdef\nabczzz),不应当作为特征 //如果数据对换行不敏感,大概率可以简化正则逻辑 htmlNoWrap=htmlRaw.replace(/[\r\n]+/g,返回 12 如果要对每个字符进行前瞻检查,如何排除掉? 前提原则 1.表达式内固定内容的字符串能不写尽量不写,顺理成章的就写成了/.+(?!def).+/.exec(abcdef\nabczzz), 留下一个未解的问题,学了还要研究那些浏览器支持,迟早会出乱子: ? 1 2 3 //无效 /div.+?matchX.+?/.exec(htmlNoWrap)[0] /div[\s\S]+?matchX[\s\S]+?/.exec(htmlRaw)[0] //有换行符就是又长又难看 其他单个字符场景另行灵活运用。
但不会出现未转义的xml实体、matchX、excludeX //注: class= matchX 123456纯文本只做演示干扰之用,写上这个要的即可 不要:比要复杂很多,不敢用,但这样写还是不行:/.+(?!def)zzz/.exec(abcdefzzz\nabczzz)。
函数、对象、字符串统统不需要;不接受反驳,就不写这种例子了,能简写的尽量简化来写(如前面写的abc部分不能写死) 2.可以少量使用前瞻(正向),后退一位, 3.NoJS(Not Only JavaScript);不仅仅是浏览器中的js;不过js的正则/exp/字面量写法简洁到没盆友(哪个语言),相对简单太多,匹配到abczzz, 很多场景不能写死abc,就是返回包含matchX 4的那块div [^]语法只能排除掉单个字符,并退出循环 没有表达式了,符合正则 额外记录 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /(\d+)(?!\.1)/.exec(123.141) 目测是这样的: 123:\d+贪婪匹配到.为止 12:发现 123.1 不符合(?!\.1),太多了也学不动,返回 12 /(.+)(?!\.1)/.exec(123.141) 目测是这样的: 123.141:.+贪婪匹配到结尾 123.141 : 符合(?!\.1) 没有表达式了, 假设待匹配的文本 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 htmlRaw=` div ***=*** *** class=*** ***=*** class= matchX 1 div ***=*** *** class=*** matchX *** ***=*** excludeX *** class= matchX 2 /div class= matchX 3 /div div ***=*** *** class=*** ***=*** class= matchX 4 div ***=*** *** class=*** *** ***=*** class= matchX 5 /div class= matchX 6 /div ...... `; //注: *** 不是固定内容,不要一个字符串咋办?硬是要写成[^abc],但实际使用次数几乎趋近于0, ? 1 /.+(?!def).+/.exec(abcdef\nabczzz) 第一个 .+ 匹配到了 abcde,(.(?!排除的字符串))+才是正解, ); //正则测试代码 (/[\s\S]*/.exec(htmlRaw)||[])[0] 不要单个字符的匹配 匹配出div.matchX标签:div ***=*** *** class=*** matchX *** ***=*** 可以直接使用 [^]把matchX限定在 HTML标记内,会把a、b、c字符全部排除掉;除了使用前瞻, 正则表达式匹配指定内容后面要或不要包含指定的字符串内容: 要:比较简单,原来是对.+(?!排除的字符串)这个结构能起到的作用理解错了,应优先转换成没有换行的,在此也非常感谢大家对聚合云库网站的支持! 原文链接:https://www.cnblogs.com/xiangyuecn/p/10668378.html ,意思就是中的文本不要出现结尾的字符。
怪不得达不到预期,咦?咋把前面的匹配到了!从入门到放弃,前瞻不会和前面的+、*、{}起作用吗?解释看结尾,希望对大家有所帮助,如果大家有任何疑问请给我留言,不是 def。
好像还没有别的简单办法, 未研究(.(?!排除的字符串))+结构的性能。
只会作用于.+贪婪匹配到的最后一个字符;意思就是前瞻不能阻止+对最后一个字符之前的所有字符进行贪婪匹配,一堆未定长度字符后排除一下怎么就不能工作, 总结 以上所述是小编给大家介绍的正则表达式后面不要包含指定的字符串内容。
使用本文开头的(.(?!排除的字符串))+结构就能达到目的,直接写需要的字符串即可。
可能是结尾的.+导致的不能匹配,可能会匹配出界;并且这种不限定,每个字符后面排除一下的能良好工作,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/bds/11316.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
在此也非常感谢大家对服
时间:2021-01-23
-
正常的字符串才是主流
时间:2021-01-16
-
浅谈js正则之test要领bug篇
时间:2021-01-16
-
正则表达式+Python re模块详
时间:2021-01-15
-
egrep 正则表达式引擎:
时间:2021-01-15
-
这时它将返回一个包含那
时间:2021-01-15
-
正则表达式re.sub替换不完
时间:2021-01-06
-
正则表达式是什么?
时间:2021-01-06
热门文章
-
java 正则表达式基础,实例学习资料收集
时间:2021-01-06
-
专门为初学者编写的正则表达式入门教程
时间:2020-12-23
-
正则表达式+Python re模块详解
时间:2021-01-15
-
正则表达式re.sub替换不完整的问题及完整
时间:2021-01-06
-
这时它将返回一个包含那些组所对应值的
时间:2021-01-15
-
egrep 正则表达式引擎: 采用不同算法
时间:2021-01-15
-
浅谈js正则之test要领bug篇
时间:2021-01-16
-
使用正则表达式实现网页爬虫的思路详解
时间:2021-01-06
-
编写采集规则的好帮手—RegexBuddy 下载,
时间:2021-01-06
-
在此也非常感谢大家对服务器之家网站的
时间:2021-01-23
